package com.molichuxing.services.infrastructure.service;

import com.molichuxing.framework.service.RootService;
import com.molichuxing.services.business.dto.request.create.GoodsExclusiveCreateDto;
import com.molichuxing.services.infrastructure.dto.response.GoodsExclusiveDto;
import com.molichuxing.services.property.GoodsExclusiveTypeEnum;
import com.molichuxing.services.property.GoodsPaymentTypeEnum;

import java.util.List;
import java.util.Map;

/**
 * 单服务 专属里程商品表
 *
 * @author xuelin yi
 */
public interface GoodsExclusiveService extends RootService {

    /**
     * 根据商品id集合查询专属商品信息
     *
     * @param goodsIds
     * @return
     */
    public Map<Integer, GoodsExclusiveDto> getGoodsExclusiveByIds(List<Integer> goodsIds);

    /**
     * 根据商品id集合查询专属商品信息
     *
     * @param goodsIds           商品id集合
     * @param goodsExclusiveType 征信类型（null查全部）
     * @return
     */
    public Map<Integer, GoodsExclusiveDto> getGoodsExclusiveByIds(List<Integer> goodsIds,
                                                                  GoodsExclusiveTypeEnum goodsExclusiveType);


    /**
     * 根据商品id集合获取数量
     *
     * @param goodsIds
     * @param goodsPaymentTypeEnum
     * @return
     */
    public int getGoodsExclusiveCount(List<Integer> goodsIds, GoodsPaymentTypeEnum goodsPaymentTypeEnum);

    /**
     * 根据商品id查询专属商品信息
     *
     * @param goodsId
     * @return
     */
    public GoodsExclusiveDto getGoodsExclusiveById(Integer goodsId);

    /**
     * 新增专属商品信息列表
     *
     * @param createDto
     * @return
     */
    public int createExclusiveGoodsProduct(GoodsExclusiveCreateDto createDto);
}
